package com.filter.control.listening;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 使用cpu和内存
 */
@Component
public class MemberCpuUse implements ApplicationListener<ContextRefreshedEvent> {

    @Value("${isLoad}")
    private Boolean isLoad;

    @Value("${memory}")
    private Integer memory;

    /**
     * 声明成员变量
     */
    private List<byte[]> objectList;

    @Override
    public void onApplicationEvent(ContextRefreshedEvent event) {

        if(isLoad == false){
            return;
        }
        // 指定占用的内存大小（单位：MB）
        long memorySize = 1024 * memory;
        // 计算需要创建的对象数量
        long objectCount = memorySize * 1024 * 1024 / calculateObjectSize();
        // 创建对象列表，占用指定内存大小
        objectList = new ArrayList<>();
        for (long i = 0; i < objectCount; i++) {
            objectList.add(new byte[calculateObjectSize()]);
        }
    }

    /**
     * 计算单个对象的大小
     * @return
     */
    private static int calculateObjectSize() {
        // 这里简单地返回一个固定大小的对象（32字节）
        return 1024;
    }


}
